
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include"item.h"
#include <QMainWindow>
#include<QPaintEvent>
#include<QPainter>
#include<QDebug>
#include<QAction>
#include<QMenu>
#include<dialog.h>
#include<QMouseEvent>
#include<QPixmap>
#include<QFont>
#include<QTime>
#include<QMessageBox>
#include<QAbstractButton>
#include<QRandomGenerator>

#define RECT_WIDTH 30
#define RECT_HEIGHT 30
#define START_X 100
#define START_Y 100

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow

{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    void initItems();//初始化游戏
    void releaseItems();//结束后释放空间
    void newGame();//新游戏
    void overGame();//踩坤，结束
    bool findAll();//是否找到所有雷
    void paintEvent(QPaintEvent *);//画图
    void mousePressEvent(QMouseEvent *event);//鼠标操作
    void drawBoard();//画布局
    void drawItems();//画物体
    void drawItem(QPainter&painter,Item*pItem);//画单个物体
    void openEmptyItem(QPoint pt);//点击空白元素时，递归查找相邻空白元素和数字元素
    bool pointInGameArea(QPoint pt);//判断坐标是否在坐标内
public slots:
    void slot_newGame();
    void slot_level_Easy();
    void slot_level_Middle();
    void slot_level_Difficult();
    void slot_level_Self();
    void slot_level_Self_get();


private:
    Ui::MainWindow *ui;

    QPixmap flagImage;
    QPixmap kunImage;

    int rows;//行数
    int cols;//列数
    int kun;//坤数
    QVector<QPoint> Kuns;
    QVector<QVector<Item*>>items;//创建所有元素容器
    bool m_bGameFail;//判断游戏是否失败

    Dialog *dialogSelf;//自定义对话框
};

#endif // MAINWINDOW_H
